using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;

namespace Coding.Methods
{
    /// <summary>
    /// kodowanie unarne: liczba x jest zakodowana jako ciag x jedynek zakonczonych zerem
    /// </summary>
    public class UnaryCoding : CodingMethod
    {

        public MyBitVector Compress(List<int> value)
        {
            MyBitVector result = new MyBitVector();

            foreach (int x in value)
            {
                for (int i = 0; i < x; i++)
                    result.Append(false);
            
                result.Append(true);
            }
            return result;
        }

        public List<int> Decompress(MyBitVector array)
        {
            List<int> result = new List<int>();
            int counter = 0;
            bool value;

            for(int i = 0 ; i < array.Length;i++)
            {
                value = array[i];
                if (value == true)
                {
                    result.Add(counter);
                    counter = 0;
                }
                else
                    counter++;
                
            }
            return result;
        }
    }
}
